/**
 * 函数形式的插件
 */
import axios from "axios";

axios.defaults.baseURL = "http://localhost:3000";

// 请求拦截器
axios.interceptors.request.use(
  (config) => {
    // config 请求配置 有 url、method、params、body、headers
    console.log("请求拦截器", config);
    // 可以判断token是否存在，统一给请求头中添加好token
    config.headers.token = "abcdefg";

    return config;
  },
  (error) => {
    // 请求失败触发，比如断网之类的场景
    return Promise.reject(error);
  }
);

// 响应拦截器
axios.interceptors.response.use(
  (response) => {
    // http 状态码 2xx 时进入
    // response  - axios 包装对象
    console.log("响应拦截器", response);
    // return "hello world";
    // 直接返回 response.data, 可以让后续调接口的地方省略调 response.data 这个步骤
    return response.data;
  },
  (error) => {
    // http 状态码 非 2xx 时进入
    return Promise.reject(error);
  }
);

const pluginB = (Vue) => {
  console.log("pluginB", Vue);

  Vue.prototype.$http = axios;
};

// 导出
export default pluginB;
